<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>数据类型</title>

<para>
<ptitle>数据类型</ptitle>
　TJS2 虽然不需要定义变量的「类型」，但在内部实际上变量拥有类型。相比“变量不具有类型”的说法，“类型将被自动地动态处理”这种说法更加准确。<r/>
　TJS2 的内部类型，有<tt>void</tt>, 整数型、实数型、字符串型、对象类型、字节串型等。<r/>
</para>

<para>
<ptitle>void</ptitle>
　void 表示“什么也没有” ( 与 JavaScript 中的意义不同 )。刚刚声明并且没有初始化的变量的值就是 <tt>void</tt> 。<r/>
　<tt>void</tt> 之间的比较可以使用 <tt>===</tt> (类型识别比较) 运算符。<r/>
　对于 void 类型变量，<tt><kw>typeof</kw></tt> 运算符将返回 <tt>"<kw>void</kw>"</tt> 。<r/>
</para>

<para>
<ptitle>整数型</ptitle>
　TJS2 把所有整数型当作 64bit 精度的整数处理。通常整数型都会被当作<kw>有符号整数</kw>处理，唯一的例外是 <tt><kw>&gt;&gt;&gt;</kw></tt> 运算符会把左边当作<kw>无符号整数</kw>处理。<r/>
　对于整数类型变量，<tt><kw>typeof</kw></tt> 运算符将返回 <tt>"<kw>Integer</kw>"</tt> 。<r/>
</para>

<para>
<ptitle>实数型</ptitle>
　TJS2 把所有实数型当作 64bit 精度的实数 ( <kw>双精度实数</kw> ) 处理。<r/>
　对于实数类型变量，<tt><kw>typeof</kw></tt> 运算符将返回 <tt>"<kw>Real</kw>"</tt> 。<r/>
</para>

<para>
<ptitle>字符串型</ptitle>
　TJS2 的字符串是不定长度，以 0 终结的字符串。所谓的“以 0 终结的字符串”是指假定以 <tt>\0</tt> 终结的字符串。<r/>
　文字代码是以宽字符方式处理 ( 通常为 <kw>UNICODE</kw> ) ，具体使用 16bit的宽字符还是 32bit的宽字符由 TJS2 运行的的环境决定。比如说在 Windows 上是 16bit，在 Solaris 和 Linux 等环境下则是 32bit。<r/>
　对于字符串类型变量，<tt><kw>typeof</kw></tt> 运算符将返回 <tt>"<kw>String</kw>"</tt> 。<r/>
</para>

<para>
<ptitle>对象类型</ptitle>
　对象类型，是指TJS语言中表示对象的类型。除了使用 <tt>new</tt> 运算符创建的对象之外，函数、类、属性对象等都被作为对象类型处理。<r/>
　对于对象类型变量，<tt><kw>typeof</kw></tt> 运算符将返回 <tt>"<kw>Object</kw>"</tt> 。<r/>
<r/>
　TJS 和 JavaScript 不同，TJS2 的对象类型，除了包含指向对象本身的指针之外，还包含指向对象所在的上下文对象的指针。闭包(Closure)功能的实现由于这种特性的存在而成为可能。变更对象上下文的运算符是 <tt>incontextof</tt> 运算符。<r/>
</para>

<para>
<ptitle>字节串型</ptitle>
　字节串型是处理 8bit 数据组成的数据串的类型。该类型的主要功能是处理<kw>二进制</kw>数据。<r/>
　对于字节串型变量，<tt><kw>typeof</kw></tt> 运算符将返回 <tt>"<kw>Octet</kw>"</tt> 。<r/>
</para>

</doc>